package com.lazily.static_;


/**
 * @Author:  GZQ
 * @date:  2025/1/12 15:16
 * @description: 类方法入门
 */

public class StaticMethod {
    public static void main(String[] args) {
        // 创建两个学生对象, 交学费
        Student tom = new Student("tom");
        tom.payFee(100);

        Student mary = new Student("mary");
        mary.payFee(100);

        // 输出当前收到的总学费
        Student.showFee();

        // 如果我们希望不创建实例, 也可以调用某个方法(即当做工具来使用)
        // 这时, 把方法做成静态方法时非常合适
        System.out.println("9开平方的结果是=" + Math.sqrt(9));

        System.out.println(MyTools.calSum(2, 3));

    }
}

// 开发自己的工具类时, 可以将方法做成静态的, 方便调用
class MyTools {
    // 求出两个数的和
    public static double calSum(double a, double b) {
        return a + b;
    }
    // 可以写出很多这样的工具方法, 需要的话......
}

class Student {

    // 普通成员
    private String name;

    // 定义一个静态变量，来累积学生的学费
    private static double fee = 0;

    public Student(String name) {
        this.name = name;
    }

    // 说明
    // 1. 当方法使用了static修饰后, 该方法就是一个静态方法
    // 2. 静态方法就可以访问静态属性/变量
    public static void payFee(double fee) {
        Student.fee += fee; // 累积到
    }

    public static void showFee() {
        System.out.println("总学费有：" + Student.fee);
    }
}